#ifndef PLUGIN_H
#define PLUGIN_H

#include <defs/export.h>
#include <defs/global.h>
#include <Core/entityobject.h>
#include <QtCore>

namespace Opl {

namespace Extensions{

O_PRIVATE_DECLARE(Plugin);

class EXTENSIONS_EXPORT Plugin : public Opl::Core::EntityObject
{
    Q_OBJECT
    //Q_PROPERTY()
public:

    Plugin();
    Plugin(Opl::Core::EntityObject *parent);
    virtual ~Plugin();

    //Q_INVOKABLE virtual bool registerClass(Opl::Scripting::System::IO::File* file) = 0;
    void setName(const QString& value);
    const QString& Name() const;

    bool Valid() const;

    virtual QString toString();
    const QString& errorString()const;
public slots:


protected:
    void setValid(bool state);
    void setErrorString(const QString& error);
private:
    O_PRIVATE_DECLARE_MEMBER(Plugin)
};

}}
#endif // PLUGIN_H

